combo cell renderer: Stop using ::focus-out-event
authorMatthias Clasen <mclasen@redhat.com>
Sat, 6 Jan 2018 20:06:12 +0000 (15:06 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 16 Jan 2018 19:14:10 +0000 (14:14 -0500)
The has-focus property works fine here.

gtk/gtkcellrenderercombo.c

index 14bc99fb217785ddd241bd15084b434db375301b..da49c771cb06ecbede2310ce8d9bad3c9ecaefe4 100644 (file)
@@ -393,15 +393,13 @@ gtk_cell_renderer_combo_editing_done (GtkCellEditable *combo,
   g_free (new_text);
 }
 
-static gboolean
-gtk_cell_renderer_combo_focus_out_event (GtkWidget *widget,
-                                        GdkEvent  *event,
-                                        gpointer   data)
+static void
+gtk_cell_renderer_combo_focus_change (GtkWidget  *widget,
+                                      GParamSpec *pspec,
+                                      gpointer    data)
 {
-  
-  gtk_cell_renderer_combo_editing_done (GTK_CELL_EDITABLE (widget), data);
-
-  return FALSE;
+  if (!gtk_widget_has_focus (widget))
+    gtk_cell_renderer_combo_editing_done (GTK_CELL_EDITABLE (widget), data);
 }
 
 typedef struct 
@@ -520,8 +518,8 @@ gtk_cell_renderer_combo_start_editing (GtkCellRenderer     *cell,
   g_signal_connect (GTK_CELL_EDITABLE (combo), "changed",
                    G_CALLBACK (gtk_cell_renderer_combo_changed),
                    cell_combo);
-  priv->focus_out_id = g_signal_connect (combo, "focus-out-event",
-                                         G_CALLBACK (gtk_cell_renderer_combo_focus_out_event),
+  priv->focus_out_id = g_signal_connect (combo, "notify::has-focus",
+                                         G_CALLBACK (gtk_cell_renderer_combo_focus_change),
                                          cell_combo);
 
   priv->combo = combo;